package com.ck.ips.controller.program;

import com.ck.common.model.OperationResult;
import com.ck.core.constant.PageConstant;
import com.ck.ips.service.program.ProgramService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author linqiang
 * @version v1.0
 * @Description 提供给商家创建节目
 * @date 2019-05-09 16:44
 */
@RestController
@RequestMapping(value = "/api/program")
public class ApiController {

    @Autowired
    private ProgramService programService;

    /**
     * api新增节目
     *
     * @param customerName   客户名称
     * @param deviceCodes    设备序列号（多个已英文逗号分割）
     * @param programName    节目名称
     * @param putinLevel     投放级别
     * @param putinLimit     投放限制
     * @param putinStartTime 投放开始时间
     * @param putinEndTime   投放结束时间
     * @param sourceJson     素材JSON信息 （key为分辨率，value为素材信息）
     * @return OperationResult
     * @see static/template/api_program_source_json_demo.json
     */
    @PostMapping(value = "/add")
    public OperationResult apiAdd(String customerName, String deviceCodes, String programName, Integer putinLevel, String putinLimit,
                                  String putinStartTime, String putinEndTime, String sourceJson) {
        return programService.apiAdd(customerName, deviceCodes, programName, putinLevel, putinLimit, putinStartTime, putinEndTime, sourceJson);
    }

    /**
     * 节目详情
     *
     * @param customerName   客户名称
     * @param programVersion 节目版本号
     * @return OperationResult
     */
    @PostMapping(value = "/detail")
    public OperationResult detail(String customerName, String programVersion) {
        return programService.getDetail(customerName, programVersion);
    }

    /**
     * 节目详情
     *
     * @param customerName 客户名称
     * @return OperationResult
     */
    @PostMapping(value = "/list")
    public OperationResult list(String customerName, Integer pageNum, Integer pageSize) {
        pageNum = (pageNum == null ? PageConstant.DEFAULT_PAGE_NUM : pageNum);
        pageSize = (pageSize == null ? PageConstant.DEFAULT_PAGE_SIZE : pageSize);
        return programService.list(customerName, pageNum, pageSize);
    }

    // TODO 暂不开放api编辑节目
}
